/**
 * Copyright ©2003~2019年9月29日 szkingdom
 * @author raohj
 * @date 2019年9月29日
 * @file RMySQL.java
 * @comment : please input your comment to this file
 * @version : input version
 * @modify:
 * 		1、 2019年9月29日 由 raohj 新建文件
 */
package com.ccnu.demojava.database;

import com.ccnu.database.dao.impl.TTestMapper;
import com.ccnu.database.dao.pojo.TTest;
import com.ccnu.rc.date.RDate;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.Reader;

/**
 * @author raohj
 * @date 2019年9月29日
 * @version 
 * @comment 测试MySQL的性能
 */
public class RMySQL {
	private static final Logger log = LoggerFactory.getLogger(RMySQL.class);
	private final static SqlSessionFactory sqlSessFac;
	// 避免多次获取sqlsessionfactory，放在静态代码中获取
	static {
		// 读取配置文件，并且构建一个SqlSessionFactory
		String resource = "mybatis-config.xml";
		Reader reader = null;
		try {
			reader = Resources.getResourceAsReader(resource);
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
		
		sqlSessFac = new SqlSessionFactoryBuilder().build(reader);
	}
	
	public static void testInsert() {
		log.info("start insert:" + RDate.getMillionTime());
		// 从 SqlSessionFactory 中获取 SqlSession
		SqlSession sqlSess = sqlSessFac.openSession();
		
		// 获取po的实现对象
		TTestMapper t_Test = sqlSess.getMapper(TTestMapper.class);
		for(int i=0; i<30000000; i++) {
			String custNo =String.format("201980929%010d", i+1);
			TTest testPo = new TTest();
			testPo.setCustNo(custNo);
			testPo.setCustName("rhj" + custNo);
			testPo.setCustBirthday("19880828");
			// 执行SQL语句，如果没有建立连接，则建立连接
			t_Test.insert(testPo);
			if(i%1000==0) {
				sqlSess.commit();		
			}
		}
		// 执行提交
		sqlSess.commit();
		log.info("end insert:" + RDate.getMillionTime());
		// 关闭连接
		sqlSess.close();
	}

	public static void insertOrder(){

	}
}
